package pe.edu.upc.dsd.agencianavieraws.dao.jdbc;

import java.util.List;


import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;
import org.springframework.stereotype.Repository;

import pe.edu.upc.dsd.agencianavieraws.dao.ClienteDao;
import pe.edu.upc.dsd.agencianavieraws.model.Cliente;

@Repository
public class ClienteDaoJdbc extends SimpleJdbcDaoSupport implements ClienteDao{

	@Autowired
	public ClienteDaoJdbc(DataSource dataSource){
		setDataSource(dataSource);
	}
	
	@Override
	public int registrarCliente(Cliente cliente) {
		// TODO Auto-generated method stub
		 return getSimpleJdbcTemplate()
         .update("insert into cliente(nombre,apellido,ruc,razonSocial,tipoDocumento,numeroDocumento) values(?, ?, ?, ?, ?, ?)",
                        cliente.getNombre(), cliente.getApellido(),  cliente.getRuc(), cliente.getRazonSocial(), cliente.getTipoDocumento(),cliente.getNumeroDocumento());
	}

	@Override
	public List<Cliente> getClientes() {
		// TODO Auto-generated method stub
		return getSimpleJdbcTemplate().query(
                "select nombre,apellido,ruc,razonSocial,tipoDocumento,numeroDocumento from cliente",
                new BeanPropertyRowMapper<Cliente>(Cliente.class));
	}

	@Override
	public Cliente obtenerCliente(String numeroDocumento) {
		return getSimpleJdbcTemplate().queryForObject(
                "select nombre,apellido,ruc,razonSocial,tipoDocumento,numeroDocumento from cliente where numeroDocumento=?",
                new BeanPropertyRowMapper<Cliente>(Cliente.class), numeroDocumento);
	}

	@Override
	public int modificarCliente(String numeroDocumento, Cliente cliente) {
		// TODO Auto-generated method stub
		return getSimpleJdbcTemplate()
        .update("update cliente set razonsocial=? where numeroDocumento=?",
        		cliente.getRazonSocial(), cliente.getNumeroDocumento() );
	}

	@Override
	public int eliminarCliente(String numeroDocumento) {
		// TODO Auto-generated method stub
		return getSimpleJdbcTemplate().update("delete cliente where numeroDocumento=?", numeroDocumento);
	}

}
